/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladores;

/**
 *
 * @author Administrador
 */
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author PauloM
 */

import java.util.List;
import permissaoUsuario.CadastroPermissaoUsuario;
import permissaoUsuario.PermissaoUsuario;
import permissaoUsuario.PermissaoUsuarioJaCadastradoException;
import permissaoUsuario.RepositorioPermissaoUsuario;
import util.CamposObrigatoriosException;
import util.ErroAcessoRepositorioException;

/*
 *  Generated by StarUML(tm) Java Add-In
 *  
 *  @Project : UntitledathLogistica
 *  @Date : 24-08-2011
 *  @Author : @Alberto Medeiros <albertomedeiros214@gmail.com>
 *  
 */




public class ControladorPermissaoUsuario {
    
    private RepositorioPermissaoUsuario objRepositorioPermissaoUsuario;

    public ControladorPermissaoUsuario(RepositorioPermissaoUsuario objRepositorioPermissaoUsuario) {
        this.objRepositorioPermissaoUsuario = objRepositorioPermissaoUsuario;
    }
    
    /**
     * Metodo que ira cadastrar/atualizar os objetos PermissaoUsuario
     * 
     * @param objPermissaoUsuario
     * @throws ErroAcessoRepositorioException 
     */
    public void cadastrar(PermissaoUsuario objPermissaoUsuario) throws ErroAcessoRepositorioException, CamposObrigatoriosException, PermissaoUsuarioJaCadastradoException{
        // Iniciando os cadastros
        CadastroPermissaoUsuario objCadastroPermissaoUsuario = new CadastroPermissaoUsuario(this.objRepositorioPermissaoUsuario);
        
        if(objCadastroPermissaoUsuario.existePorIdLoginPorIdPermissao(objPermissaoUsuario.getLogin().getIdLogin(), objPermissaoUsuario.getPermissao().getIdPermissao())) throw new PermissaoUsuarioJaCadastradoException();
        
        objCadastroPermissaoUsuario.cadastrarAtualizar(objPermissaoUsuario);
    }
    
    /**
     * Metodo que ira cadastrar/atualizar os objetos PermissaoUsuario
     * 
     * @param objPermissaoUsuario
     * @throws ErroAcessoRepositorioException 
     */
    public void atualizar(PermissaoUsuario objPermissaoUsuario) throws ErroAcessoRepositorioException, CamposObrigatoriosException, PermissaoUsuarioJaCadastradoException{
        // Iniciando os cadastros
        CadastroPermissaoUsuario objCadastroPermissaoUsuario = new CadastroPermissaoUsuario(this.objRepositorioPermissaoUsuario);
        
        // Validações
        if(objPermissaoUsuario.getIdPremissaoUsuario() == 0) throw new CamposObrigatoriosException("Identificação PermissaoUsuario");
        if(objCadastroPermissaoUsuario.existePorIdLoginPorIdPermissao(objPermissaoUsuario.getLogin().getIdLogin(), objPermissaoUsuario.getPermissao().getIdPermissao())) throw new PermissaoUsuarioJaCadastradoException();
        
        objCadastroPermissaoUsuario.cadastrarAtualizar(objPermissaoUsuario);
    }

    /**
     * Método que ira procurar um determinado objeto PermissaoUsuario na base pelo seu Id
     * 
     * @param idPermissaoUsuario
     * @throws Exception
     * @throws ErroAcessoRepositorioException 
     * @return PermissaoUsuario
     */
    public PermissaoUsuario procurar(int idPermissaoUsuario) throws ErroAcessoRepositorioException, CamposObrigatoriosException, Exception {
        // Iniciando os cadastros
        CadastroPermissaoUsuario objCadastroPermissaoUsuario = new CadastroPermissaoUsuario(this.objRepositorioPermissaoUsuario);
        
        // Casts 
        idPermissaoUsuario = (int) idPermissaoUsuario;
        
        // Validações
        if(idPermissaoUsuario == 0) throw new CamposObrigatoriosException("Identificação PermissaoUsuario");
                
        return objCadastroPermissaoUsuario.procurar(idPermissaoUsuario);
    }

    /**
     * Método que ira verificar a existência da um objeto PermissaoUsuario
     * @param idPermissaoUsuario
     * @throws ErroAcessoRepositorioException 
     * @return boolean
     */
    public boolean existe(int idPermissaoUsuario) throws ErroAcessoRepositorioException, CamposObrigatoriosException {
        // Iniciando os cadastros
        CadastroPermissaoUsuario objCadastroPermissaoUsuario = new CadastroPermissaoUsuario(this.objRepositorioPermissaoUsuario);
        
        // Casts 
        idPermissaoUsuario = (int) idPermissaoUsuario;
        
        // Validações
        if(idPermissaoUsuario == 0) throw new CamposObrigatoriosException("Identificação PermissaoUsuario");
                
        return objCadastroPermissaoUsuario.existe(idPermissaoUsuario);
    }

    /**
     * Método que ira listar os objetos PermissaoUsuario na case
     * 
     * @return List<PermissaoUsuario>
     * @throws Exception
     * @throws ErroAcessoRepositorioException 
     */
    public List<PermissaoUsuario> listar(String strComplemento) throws Exception, ErroAcessoRepositorioException {
       // Iniciando os cadastros
        CadastroPermissaoUsuario objCadastroPermissaoUsuario = new CadastroPermissaoUsuario(this.objRepositorioPermissaoUsuario);

        return objCadastroPermissaoUsuario.listar(strComplemento);
    }
    
    /**
     * Método que ira remover um objeto PermissaoUsuario da base
     * 
     * @param idPermissaoUsuario
     * @throws PermissaoUsuarioNaoCadastradoException
     * @throws ErroAcessoRepositorioException 
     */
    public void remover(int idPermissaoUsuario) throws Exception, ErroAcessoRepositorioException {
        // Iniciando os cadastros
        CadastroPermissaoUsuario objCadastroPermissaoUsuario = new CadastroPermissaoUsuario(this.objRepositorioPermissaoUsuario);
        
        // Casts 
        idPermissaoUsuario = (int) idPermissaoUsuario;
        
        // Validações
        if(idPermissaoUsuario == 0) throw new CamposObrigatoriosException("Identificação PermissaoUsuario");
                
        objCadastroPermissaoUsuario.remover(idPermissaoUsuario);
    }
    
    /**
     * Metodo que ira listar as PermissaoUsuarios por login
     *
     * @return Collection
     */
    public List<PermissaoUsuario> listarPorLogin(int idLogin) throws Exception, ErroAcessoRepositorioException {
        // Iniciando os cadastros
        CadastroPermissaoUsuario objCadastroPermissaoUsuario = new CadastroPermissaoUsuario(this.objRepositorioPermissaoUsuario);
        
        // Casts 
        idLogin = (int) idLogin;
        
        // Validações
        if(idLogin == 0) throw new CamposObrigatoriosException("Identificação Login");
                
        return objCadastroPermissaoUsuario.listarPorLogin(idLogin);
    }
}

